#ifndef __SERVO_H
#define __SERVO_H

#include "PWM.h"
#include "PID.h"

// 舵机角度范围定义（与实际舵机匹配）
#define MIN_ANGLE_X 0.0f    // PA1-270度舵机：最小角度
#define MAX_ANGLE_X 270.0f  // PA1-270度舵机：最大角度
#define MIN_ANGLE_Y 0.0f    // PA2-180度舵机：最小角度
#define MAX_ANGLE_Y 180.0f  // PA2-180度舵机：最大角度

//  舵机初始化（初始化底层PWM）

void Servo_Init(void);

// 设置PA1控制的270度舵机角度（直接角度控制）

void Servo_SetAngle1(float Angle);

//设置PA2控制的180度舵机角度（直接角度控制）

void Servo_SetAngle2(float Angle);

// 通过PID控制PA1的270度舵机到目标角度
 
void Servo_SetAngleWithPID1(float Angle, PID_Controller *pid);

// 通过PID控制PA2的180度舵机到目标角度

void Servo_SetAngleWithPID2(float Angle, PID_Controller *pid);

//@brief  获取PA1舵机的当前PWM比较值（CCR1）
 

uint16_t PWM_GetCompare1(void);  

//获取PA2舵机的当前PWM比较值（CCR2）
uint16_t PWM_GetCompare2(void);  

//@brief  读取PA1的270度舵机当前角度

float ReadServoAngle1(void);

//读取PA2的180度舵机当前角度
float ReadServoAngle2(void);

#endif
